from llama_index.core.base.llms.types import ChatMessage
# from modelscope import snapshot_download
#
# download_path = r'E:\AIModels'
# model_dir = snapshot_download('deepseek-ai/deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B', cache_dir=download_path)

from llama_index.llms.huggingface import HuggingFaceLLM

# 使用 HuggingFaceLLM 加载本地大模型
llm = HuggingFaceLLM(
    model_name='E:\AIModels\deepseek-ai\DeepSeek-R1-Distill-Qwen-1___5B',
    tokenizer_name='E:\AIModels\deepseek-ai\DeepSeek-R1-Distill-Qwen-1___5B',
    model_kwargs={'trust_remote_code': True},
    tokenizer_kwargs={'trust_remote_code': True}
)
# {'trust_remote_code': True}, 允许模型和分词器来加载来自远程仓库自定义代码。具体来说：
# 对于model_kwargs, 它使得模型可以信任并执行远程代码，例如自定义的前向传播逻辑或特殊的初始化方法。
# 对于tokenizer_kwargs，它使得分词器可以信任并执行远程代码，例如自定义的分词规则或预处理逻辑。
# 这两个参数通常用于加载那些不仅仅是权重文件，还包含自定义实现的模型和分词器。确保设置为True 可以使这些自定义实现生效, 但也需要注意安全

# 调用chat引擎得到回复
rsp = llm.chat(messages=[ChatMessage(content='你叫什么名字？')])
print(rsp)
